;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; File format: UTF-8
; R8051XC2 SFR特殊功能寄存器定义
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$SAVE       ; 存储最近的LIST和GEN的设置
$NOLIST     ; 不使用最近的LIST配置

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; * 8051 SFR特殊寄存器描述，8051通用的名字用><表示，R8051XC2特有的正常表示，
; * 所有8051都有MCS-51包含的21个特殊功能寄存器，其它的寄存器是各芯片特有的。
; * Keil调试时“Symbols”窗口中有Special Function Registers：SP、PSW、ACC、A、
; * B、DPL、DPH、DPS、DPC、CKCON、PCON、IEN0~4、IP0~1、IRCON、IRCON2、P0~P3、
; * S0~1CON、SO~1BUF、SO~1RELL、SO~1RELH、ADCON、IEN2、TCON、TMOD、TL0~1、TH0~1、
; * T2CON、TL2、TH2、CRCL、CRCH、CCEN、CCL1~3、CCH1~3、WDTREL、MD0~5、ARCON、
; * I2CDAT、I2CADR、I2CCON、I2CSTA、I2C2ADR、I2C2CON、I2C2STA、SPSTA、SPCON、
; * SPDAT、SPSSN、DMAS0~2、DMAT0~2、DMAC0~2、DMASEL、DMAM0、DMAM2、SRST、RTCSEL、RTCDAT
;  ------------ ------ ------ ------ ------ ------ ------ ------ --------
; | 寄存器地址 | 0x80 | 0x81 | 0x82 | 0x83 | 0x84 | 0x85 | 0x86 | 0x87 |
; | 缩写       | >P0< | >SP< | >DPL<| >DPH<|      |      |WDTREL|>PCON<|
; | 描述       | IO口 | 堆栈 |数据低|数据高|      |      |      |电源控制|
;  ------------ ------ ------ ------ ------ ------ ------ ------ --------
; |  0x88  |  0x89  |  0x8a  |  0x8b  |  0x8c  |  0x8d  |  0x8e  |  0x8f  |
; | >TCON< | >TMOD< |  >TL0< |  >TL1< |  >TH0< |  >TH1< |  CKCON |  
; | 定时器 | 定时器 | 定时器 | 定时器 | 定时器 | 定时器 |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0x90  |  0x91  |  0x92  |  0x93  |  0x94  |  0x95  |  0x96  |  0x97  |
; |  >P1<  |        |  DPS   |  DPC   |        |
; |  IO口1 |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0x98  |  0x99  |  0x9a  |  0x9b  |  0x9c  |  0x9d  |  0x9e  |  0x9f  |
; | >SCON< | >SBUF< |  IEN2  |  S1CON |  S1BUF | S1RELL |
; | 串口0  | 串口0  |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xa0  |  0xa1  |  0xa2  |  0xa3  |  0xa4  |  0xa5  |  0xa6  |  0xa7  |
; |  >P2<  |  DMAS0 |  DMAS1 |  DMAS2 |  DMAT0 |  DMAT1 |  DMAT2 |
; |  IO口2 |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xa8  |  0xa9  |  0xaa  |  0xab  |  0xac  |  0xad  |  0xae  |  0xaf  |
; |  >IE<  |  IP0   | S0RELL |
; |中断控制|
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xb0  |  0xb1  |  0xb2  |  0xb3  |  0xb4  |  0xb5  |  0xb6  |  0xb7  |
; |  >P3<  |  DMAC0 |  DMAC1 |  DMAC2 | DMASEL |  DMAM0 |  DMAM1 |
; |  IO口3 |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xb8  |  0xb9  |  0xba  |  0xbb  |  0xbc  |  0xbd  |  0xbe  |  0xbf  |
; |  >IP<  |  IP1   | S0RELH | S1RELH |                          | IRCON2 |
; |中断优先|
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xc0  |  0xc1  |  0xc2  |  0xc3  |  0xc4  |  0xc5  |  0xc6  |  0xc7  |
; |  IRCON |  CCEN  |  CCL1  |  CCH1  |  CCL2  |  CCH2  |  CCL3  |  CCH3  |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xc8  |  0xc9  |  0xca  |  0xcb  |  0xcc  |  0xcd  |  0xce  |  0xcf  |
; | >T2CON<|        |  CRCL  |  CRCH  |  >TL2< |  >th2< | RTCSEL | RTCDAT |
; | 定时器2|                          | 定时器2| 定时器2|
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xd0  |  0xd1  |  0xd2  |  0xd3  |  0xd4  |  0xd5  |  0xd6  |  0xd7  |
; |  >PSW< |  IEN4  | I2C2DAT| I2C2ADR| I2C2CON| I2C2STA|
; |程序状态|
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xd8  |  0xd9  |  0xda  |  0xdb  |  0xdc  |  0xdd  |  0xde  |  0xdf  |
; |  ADCON |        | I2CDAT | I2CADR | I2CCON | I2CSTA |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xe0  |  0xe1  |  0xe2  |  0xe3  |  0xe4  |  0xe5  |  0xe6  |  0xe7  |
; |  >ACC< |  SPSTA |  SPCON |  SPDAT |  SPSSN |
; | 累加器 |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xe8  |  0xe9  |  0xea  |  0xeb  |  0xec  |  0xed  |  0xee  |  0xef  |
; |        |  MD0   |  MD1   |  MD2   |  MD3   |  MD4   |  MD5   |  ARCON |
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xf0  |  0xf1  |  0xf2  |  0xf3  |  0xf4  |  0xf5  |  0xf6  |  0xf7  |
; |   >B<  |                                                     |  SRST  |
; | B寄存器|
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xf8  |  0xf9  |  0xfa  |  0xfb  |  0xfc  |  0xfd  |  0xfe  |  0xff  |
;  -------- -------- -------- -------- -------- -------- -------- --------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;  ------------ ------ ------ ------ ------ ------ ------ ------ --------
; | 寄存器地址 | 0x80 | 0x81 | 0x82 | 0x83 | 0x84 | 0x85 | 0x86 |  0x87  |
; | 缩写       | >P0< | >SP< | >DPL<| >DPH<|      |      |WDTREL| >PCON< |
; | 描述       | IO口 | 堆栈 |数据低|数据高|      |      |      |电源控制|
P0      DATA    80H ; IO口寄存器，MCS-51通用
SP      DATA    81H ; 堆栈指针，MCS-51通用
DPL     DATA    82H ; 数据地址低8位，MCS-51通用
DPH     DATA    83H ; 数据地址高8位，MCS-51通用
PCON    DATA    87H ; 电源控制，MCS-51通用
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0x88  |  0x89  |  0x8a  |  0x8b  |  0x8c  |  0x8d  |  0x8e  |  0x8f  |
; | >TCON< | >TMOD< |  >TL0< |  >TL1< |  >TH0< |  >TH1< |  CKCON |
; | 定时器 | 定时器 | 定时器 | 定时器 | 定时器 | 定时器 |
TCON    DATA    88H ; T0T1定时器控制，MCS-51通用
TMOD    DATA    89H ; T0T1定时器方式，MCS-51通用
TL0     DATA    8AH ; 定时器0低8位，MCS-51通用
TL1     DATA    8BH ; 定时器1低8位，MCS-51通用
TH0     DATA    8CH ; 定时器0高8位，MCS-51通用
TH1     DATA    8DH ; 定时器1高8位，MCS-51通用
CKCON   DATA    8EH ; 读写外部存储器的时间宽度
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0x90  |  0x91  |  0x92  |  0x93  |  0x94  |  0x95  |  0x96  |  0x97  |
; |  >P1<  |        |  DPS   |  DPC   |        |
; |  IO口1 |
P1      DATA    90H ; P1 IO口锁存器，MCS-51通用
DPS     DATA    92H ;
DPC     DATA    93H ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0x98  |  0x99  |  0x9a  |  0x9b  |  0x9c  |  0x9d  |  0x9e  |  0x9f  |
; | >SCON< | >SBUF< |  IEN2  |  S1CON |  S1BUF | S1RELL |
; | 串口0  | 串口0  |
S0CON   DATA    98H ; 串口0，MCS-51通用
S0BUF   DATA    99H ; 串口0，MCS-51通用
IEN2    DATA    9AH ;
S1CON   DATA    9BH ;
S1BUF   DATA    9CH ;
S1RELL  DATA    9DH ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xa0  |  0xa1  |  0xa2  |  0xa3  |  0xa4  |  0xa5  |  0xa6  |  0xa7  |
; |  >P2<  |  DMAS0 |  DMAS1 |  DMAS2 |  DMAT0 |  DMAT1 |  DMAT2 |
; |  IO口2 |
P2      DATA   0A0H ; P2 IO口锁存器，MCS-51通用
DMAS0   DATA   0A1H ;
DMAS1   DATA   0A2H ;
DMAS2   DATA   0A3H ;
DMAT0   DATA   0A4H ;
DMAT1   DATA   0A5H ;
DMAT2   DATA   0A6H ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xa8  |  0xa9  |  0xaa  |  0xab  |  0xac  |  0xad  |  0xae  |  0xaf  |
; |  >IE<  |  IP0   | S0RELL |
; |中断控制|
IEN0    DATA   0A8H ; 中断控制，MCS-51通用
IP0     DATA   0A9H ;
S0RELL  DATA   0AAH ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xb0  |  0xb1  |  0xb2  |  0xb3  |  0xb4  |  0xb5  |  0xb6  |  0xb7  |
; |  >P3<  |  DMAC0 |  DMAC1 |  DMAC2 | DMASEL |  DMAM0 |  DMAM1 |
; |  IO口3 |
P3      DATA   0B0H ; P3 IO口锁存器，MCS-51通用
DMAC0   DATA   0B1H ;
DMAC1   DATA   0B2H ;
DMAC2   DATA   0B3H ;
DMASEL  DATA   0B4H ;
DMAM0   DATA   0B5H ;
DMAM1   DATA   0B6H ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xb8  |  0xb9  |  0xba  |  0xbb  |  0xbc  |  0xbd  |  0xbe  |  0xbf  |
; |  >IP<  |  IP1   | S0RELH | S1RELH |                          | IRCON2 |
; |中断优先|
IEN1    DATA   0B8H ; 中断优先，MCS-51通用
IP1     DATA   0B9H ;
S0RELH  DATA   0BAH ;
S1RELH  DATA   0BBH ;
IRCON2  DATA   0BFH ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xc0  |  0xc1  |  0xc2  |  0xc3  |  0xc4  |  0xc5  |  0xc6  |  0xc7  |
; |  IRCON |  CCEN  |  CCL1  |  CCH1  |  CCL2  |  CCH2  |  CCL3  |  CCH3  |
IRCON   DATA   0C0H ;
CCEN    DATA   0C1H ;
CCL1    DATA   0C2H ;
CCH1    DATA   0C3H ;
CCL2    DATA   0C4H ;
CCH2    DATA   0C5H ;
CCL3    DATA   0C6H ;
CCH3    DATA   0C7H ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xc8  |  0xc9  |  0xca  |  0xcb  |  0xcc  |  0xcd  |  0xce  |  0xcf  |
; | >T2CON<|        |  CRCL  |  CRCH  |  >TL2< |  >th2< | RTCSEL | RTCDAT |
; | 定时器2|                          | 定时器2| 定时器2|
T2CON   DATA   0C8H ; 定时器2，MCS-51通用
CRCL    DATA   0CAH ;
CRCH    DATA   0CBH ;
TL2     DATA   0CCH ; 定时器2，MCS-51通用
TH2     DATA   0CDH ; 定时器2，MCS-51通用
RTCSEL  DATA   0CEH ;
RTCDAT  DATA   0CFH ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xd0  |  0xd1  |  0xd2  |  0xd3  |  0xd4  |  0xd5  |  0xd6  |  0xd7  |
; |  >PSW< |  IEN4  | I2C2DAT| I2C2ADR| I2C2CON| I2C2STA|
; |程序状态|
PSW     DATA   0D0H ; 程序状态，MCS-51通用
IEN4    DATA   0D1H ;
I2C2DAT DATA   0D2H ;
I2C2ADR DATA   0D3H ;
I2C2CON DATA   0D4H ;
I2C2STA DATA   0D5H ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xd8  |  0xd9  |  0xda  |  0xdb  |  0xdc  |  0xdd  |  0xde  |  0xdf  |
; |  ADCON |        | I2CDAT | I2CADR | I2CCON | I2CSTA |
ADCCON  DATA   0D8H ;
I2CDAT  DATA   0DAH ;
I2CADR  DATA   0DBH ;
I2CCON  DATA   0DCH ;
I2CSTA  DATA   0DDH ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xe0  |  0xe1  |  0xe2  |  0xe3  |  0xe4  |  0xe5  |  0xe6  |  0xe7  |
; |  >ACC< |  SPSTA |  SPCON |  SPDAT |  SPSSN |
; | 累加器 |
ACC     DATA   0E0H ; 累加器，MCS-51通用
SPSTA   DATA   0E1H ;
SPCON   DATA   0E2H ;
SPDAT   DATA   0E3H ;
SPSSN   DATA   0E4H ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xe8  |  0xe9  |  0xea  |  0xeb  |  0xec  |  0xed  |  0xee  |  0xef  |
; |        |  MD0   |  MD1   |  MD2   |  MD3   |  MD4   |  MD5   |  ARCON |
MD0     DATA   0E9H ;
MD1     DATA   0EAH ;
MD2     DATA   0EBH ;
MD3     DATA   0ECH ;
MD4     DATA   0EDH ;
MD5     DATA   0EEH ;
ARCON   DATA   0EFH ;
;  -------- -------- -------- -------- -------- -------- -------- --------
; |  0xf0  |  0xf1  |  0xf2  |  0xf3  |  0xf4  |  0xf5  |  0xf6  |  0xf7  |
; |   >B<  |                                                     |  SRST  |
; | B寄存器|
B       DATA   0F0H ; B寄存器，MCS-51通用
SRST    DATA   0F7H ;

;;
; 进一步的位定义

; PSW     DATA   0D0H ; 程序状态，MCS-51通用
CY      BIT  PSW.7 ; 进位标志位
AC      BIT  PSW.6 ; 辅助进位、半进位标志位
F0      BIT  PSW.5 ; 用户标志位
RS1     BIT  PSW.4 ; 寄存器组选择位，r0~r7有4组 
RS0     BIT  PSW.3 ; 寄存器组选择位
OV      BIT  PSW.2 ; 溢出标志位
F1      BIT  PSW.1 ; 未定义
P       BIT  PSW.0 ; 奇偶校验位
; TCON    DATA    88H ; T0T1定时器控制，MCS-51通用
TF1     BIT  TCON.7 ; 定时器1溢出标志
TR1     BIT  TCON.6 ; 定时器1
TF0     BIT  TCON.5 ; 定时器0溢出标志
TR0     BIT  TCON.4 ; 定时器0
IE1     BIT  TCON.3 ; 定时器1中断允许
IT1     BIT  TCON.2 ; 定时器1中断触发标志
IE0     BIT  TCON.1 ; 定时器0中断允许
IT0     BIT  TCON.0 ; 定时器0中断触发标志
; T2CON   DATA   0C8H ; 定时器2，MCS-51通用，但里面每个位的含义r8051xc专有
T2PS    BIT  T2CON.7
I3FR    BIT  T2CON.6
I2FR    BIT  T2CON.5
T2R1    BIT  T2CON.4
T2R0    BIT  T2CON.3
T2CM    BIT  T2CON.2
T2I1    BIT  T2CON.1
T2I0    BIT  T2CON.0
; S0CON   DATA    98H ; 串口0，MCS-51通用
SM      BIT  S0CON.7 ; 串口工作方式，波特率由晶振还是定时器决定
SM1     BIT  S0CON.6
SM2     BIT  S0CON.5 ; 多机通信控制位
REN     BIT  S0CON.4 ; 允许接收
TB8     BIT  S0CON.3 ; 发送数据8，bit9
RB8     BIT  S0CON.2 ; 接收数据8
TI      BIT  S0CON.1 ; 发送中断标志
RI      BIT  S0CON.0 ; 接收中断标志
; IEN0    DATA   0A8H ; 中断控制，MCS-51通用
EAL     BIT  IEN0.7  ; 中断禁止
WDT     BIT  IEN0.6
ET2     BIT  IEN0.5  ; 定时器2溢出中断允许
ES0     BIT  IEN0.4  ; 串口1中断允许
ET1     BIT  IEN0.3  ; 定时器1中断允许
EX1     BIT  IEN0.2  ; 外中断INT1中断允许
ET0     BIT  IEN0.1  ; 定时器0中断允许
EX0     BIT  IEN0.0  ; 外部中断INT0的中断允许
; IEN1    DATA   0B8H ; 中断优先，MCS-51通用
EXEN2   BIT  IEN1.7
SWDT    BIT  IEN1.6
EX6     BIT  IEN1.5
EX5     BIT  IEN1.4
EX4     BIT  IEN1.3
EX3     BIT  IEN1.2
EX2     BIT  IEN1.1
EX7     BIT  IEN1.0
; IRCON   DATA   0C0H ;
EXF2    BIT  IRCON.7
TF2     BIT  IRCON.6
IEX6    BIT  IRCON.5
IEX5    BIT  IRCON.4
IEX4    BIT  IRCON.3
IEX3    BIT  IRCON.2
IEX2    BIT  IRCON.1
IEX7    BIT  IRCON.0
BD      BIT  ADCCON.7

; 堆栈起始地址
ORG_SP				EQU		0B0H ; 和SFR特殊功能寄存器不冲突吧

; 中断号总个数
NR_IRQS				EQU		14H

; 中断号
IRQ_EXT0        EQU 00H
IRQ_TIMER0      EQU 01H
IRQ_EXT1        EQU 02H
IRQ_TIMER1      EQU 03H
IRQ_UART0       EQU 04H
IRQ_TIMER2      EQU 05H
IRQ_UNKNOWN     EQU 06H
IRQ_EXT7        EQU 07H
IRQ_EXT2        EQU 08H
IRQ_EXT3        EQU 09H
IRQ_EXT4        EQU 0AH
IRQ_EXT5        EQU 0BH
IRQ_EXT6        EQU 0CH
IRQ_UART1       EQU 0DH
IRQ_EXT8        EQU 0EH
IRQ_EXT9        EQU 0FH
IRQ_EXT10       EQU 10H
IRQ_EXT11       EQU 11H
IRQ_EXT12		EQU 12H
IRQ_RTC			EQU 13H

$RESTORE    ; 恢复最近的LIST和GEN的设置
